home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / ntalk_detect.nasl < prev    next >
Text File  |  2005-03-31  |  4KB  |  146 lines

  1. #
  2. # This script was written by Noam Rathaus <noamr@securiteam.com>
  3. # Minor modifications by Renaud Deraison <deraison@cvs.nessus.org>,
  4. # namely :
  5. #
  6. #    - the report is more comprehensive
  7. #    - the script exits if it gets no answer from the
  8. #      remote host at first time
  9. #    - French translation
  10. #
  11. # See the Nessus Scripts License for details
  12. #
  13. #T
  14.  
  15. if(description)
  16. {
  17.  script_id(10168);
  18.  script_version ("$Revision: 1.16 $");
  19.  script_cve_id("CVE-1999-0048");
  20.  name["english"] = "Detect talkd server port and protocol version";
  21.  script_name(english:name["english"], francais:name["francais"]);
  22.  
  23.  desc["english"] = "
  24. The remote host is running a 'talkd' daemon.
  25.  
  26. talkd is the server that notifies a user that someone else wants to initiate 
  27. a conversation with him.
  28.  
  29.  
  30. Malicious hackers may use it to abuse legitimate users by conversing with 
  31. them with a false identity (social engineering). In addition to this, an 
  32. attacker may use this service to execute arbitrary code on your system.
  33.  
  34. Solution: 
  35.  Disable talkd access from the network by adding the approriate rule on your 
  36.  firewall. If you do not need talkd, comment out the relevant line in 
  37.  /etc/inetd.conf and restart the inetd process.
  38.  
  39. See also :  http://www.cert.org/advisories/CA-1997-04.html
  40. Risk factor : Medium";
  41.  
  42.  script_description(english:desc["english"]);
  43.  
  44.  summary["english"] = "Detect talkd server port and protocol version";
  45.  script_summary(english:summary["english"]);
  46.  
  47.  script_category(ACT_GATHER_INFO);
  48.  
  49.  script_copyright(english:"This script is Copyright (C) 2000 SecuriTeam");
  50.  script_family(english:"Service detection");
  51.  
  52.  exit(0);
  53. }
  54.  
  55. #
  56. # The script code starts here
  57. #
  58. include("misc_func.inc");
  59.  
  60.  if(!(get_udp_port_state(518)))exit(0);
  61.  
  62.  socudp518 = open_sock_udp(518);
  63.  
  64.  if (socudp518)
  65.  {
  66.   send(socket:socudp518, data:string("\r\n"));
  67.   result = recv(socket:socudp518, length:1000);
  68.   close(socudp518);
  69.   if (result)
  70.   {
  71.    security_note(port:518, protocol:"udp");
  72.    register_service(port: 518, ipproto: "udp", proto: "ntalk");
  73.   }
  74.   else exit(0);
  75.  }
  76.  
  77.  
  78.  
  79.  srcaddr = this_host();
  80.  a1 = ereg_replace(pattern:"([0-9]*)\.[0-9]*\.[0-9]*\.[0-9]*",
  81.                   string:srcaddr,
  82.                   replace:"\1"); a1 = a1 % 255;
  83.                   
  84.  a2 = ereg_replace(pattern:"[0-9]*\.([0-9]*)\.[0-9]*\.[0-9]*",
  85.                   string:srcaddr,
  86.                   replace:"\1"); a2 = a2 % 255;
  87.                   
  88.  
  89.  a3 = ereg_replace(pattern:"[0-9]*\.[0-9]*\.([0-9]*)\.[0-9]*",
  90.                   string:srcaddr,
  91.                   replace:"\1"); a3 = a3 % 255;
  92.                   
  93.                   
  94.  a4 = ereg_replace(pattern:"[0-9]*\.[0-9]*\.[0-9]*\.([0-9]*)",
  95.                   string:srcaddr,
  96.                   replace:"\1"); a4 = a4 % 255;
  97.           
  98.  dstaddr = get_host_ip();
  99.  
  100.  b1 = ereg_replace(pattern:"([0-9]*)\.[0-9]*\.[0-9]*\.[0-9]*",
  101.                   string:dstaddr,
  102.                   replace:"\1"); b1 = b1 % 255;
  103.                   
  104.  b2 = ereg_replace(pattern:"[0-9]*\.([0-9]*)\.[0-9]*\.[0-9]*",
  105.                   string:dstaddr,
  106.                   replace:"\1"); b2 = b2 % 255;
  107.                   
  108.  
  109.  b3 = ereg_replace(pattern:"[0-9]*\.[0-9]*\.([0-9]*)\.[0-9]*",
  110.                   string:dstaddr,
  111.                   replace:"\1"); b3 = b3 % 255;
  112.                   
  113.                   
  114.  b4 = ereg_replace(pattern:"[0-9]*\.[0-9]*\.[0-9]*\.([0-9]*)",
  115.                   string:dstaddr,
  116.                   replace:"\1"); b4 = b4 % 255;
  117.           
  118.           
  119.  sendata = raw_string( 
  120.  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
  121.  0x00, 0x00, 0x02, 0x00, 0x00, a1,   a2, 
  122.  a3,     a4, 0x00, 0x00, 0x00, 0x00, 0x00, 
  123.  0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x04, 
  124.  b1,     b2,   b3,   b4, 0x00, 0x00, 0x00, 
  125.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  126.  0x30, 0x9F, 0x72, 0x6F, 0x6F, 0x74, 0x00, 
  127.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  128.  0x72, 0x6F, 0x6F, 0x74, 0x00, 0x00, 0x00, 
  129.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  130.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  131.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
  132. #  1     2     3     4     5     6     7     8     9     10
  133.  
  134.  dstport = 518;
  135.  soc = open_sock_udp(dstport);
  136.  send(socket:soc, data:sendata);
  137.  result = recv(socket:soc, length:4096);
  138.  if (result)
  139.  {
  140.   banner = "talkd protocol version: ";
  141.   banner = string(banner, ord(result[0]));
  142.   security_note(port:518, data:banner, protocol:"udp");
  143.  }
  144.  
  145.  close(soc);
  146.